import re

s = re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
if s:
    print(s)
    print(s.group(0))


s = re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
print(s)  # None

if s:
    print(s.group(0))


# 分组
s = re.match(r'^(\d{3})\-(\d{3,8})$', '010-12345')
"""
注意到group(0)永远是与整个正则表达式相匹配的字符串，group(1)、group(2)……表示第1、2、……个子串。
"""
print(s)
if s:
    print(s.group(0))
    print(s.group(1))
    print(s.group(2))
    print(s.groups())


t = '19:05:30'
m = re.match(r'^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)
print(m.groups())

# 贪婪匹配
print(re.match(r'^(\d+)(0*)$', '102300').groups())

print(re.match(r'^(\d+?)(0*)$', '102300').groups())

"""
编译
当我们在Python中使用正则表达式时，re模块内部会干两件事情：
编译正则表达式，如果正则表达式的字符串本身不合法，会报错；
用编译后的正则表达式去匹配字符串。
"""

re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')
print(re_telephone.match('010-12345').groups())
print(re_telephone.match('010-8086').groups())


# 正则split
s = "a b    c"
print(s.split(" "))
print(re.split(r'\s+', s))
print(re.split(r'[\s\,]+', 'a,b, c  d'))
print(re.split(r'[\s\,\;]+', 'a,b;; c  d'))


m = re.search('hello', "hello world", re.IGNORECASE)
